<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
 * Realiza a interacao entre a aplicacao e a tabela de funcionarios no banco de dados
 * 
 * @package application/models/adm
 * @name Usuario_model
 * @author Joao Claudio Dias Araujo <joao.araujo@tellks.com.br>
 */
class Funcionario_model extends CI_Model{
    
    private $tabela;
    
    function __construct() {
        parent::__construct();
        
        $this->tabela = 'funcionario';
    }
            
    /**
     * Busca todos os funcionarios do banco de dados
     * 
     * @return array
     */
    function get_all(){
        
        $this->db->select('f.id,f.nome,f.telefone,st.nome AS setor_n');
        $this->db->from($this->tabela . ' AS f');
        $this->db->join('setor AS st', 'f.setor_id = st.id', 'LEFT');
        if(!_admin())
        {
            $this->db->where_in('f.setor_id',$this->session->userdata('setores'));
        }       
        $this->db->order_by('f.setor_id');
     
        
        $funcionario = $this->db->get();
        
        if($funcionario->num_rows() > 0){
            
            return $funcionario->result();
        }
        else {
            
            return array();
        }
    }
    
    /**
     * Busca os dados de um funcionario pelo seu ID
     * 
     * @param int $id ID do grupo
     * @return mixed
     */
    function get_by_id($id){
        
        $this->db->select('f.*, c.uf');
        
        $this->db->from($this->tabela .  ' AS f');
        
        $this->db->join('cidade AS c', 'c.id = f.cidade', 'LEFT');
        
        $this->db->join('setor AS st', 'f.setor_id = st.id', 'LEFT');
        
        if(!_admin())
        {
            $this->db->where_in('f.setor_id',$this->session->userdata('setores'));
        }    
        
        $this->db->where('f.id', $id);
        
        $resultado = $this->db->get();
        
        if($resultado->num_rows() > 0){
            
            $funcionario = $resultado->row(0);
           
            
            return $funcionario;
        }
        else{
            
            return false;
        }
        
    }
         
    /**
     * Insere um usuario no banco de dados
     * 
     * @param sdtClass Object $usuario Objeto contendo os dados do usuario
     * @return boolean
     */
    function inserir($funcionario){

        $this->db->insert($this->tabela, $funcionario);
        
        $inseriu_funcionario = (bool)  $this->db->affected_rows();
        
        
        
        return $inseriu_funcionario;
    }
    
    /**
     * atualiza um funcionario no banco de dados
     * 
     * @param sdtClass Object $funcionario Objeto contendo os dados do funcionario
     * @return boolean
     */
    function atualizar($funcionario){
        
        $this->db->where('id', (int)$funcionario->id);
        
        $this->db->update($this->tabela,$funcionario);
        
        $atualizou_funcionario = (bool)$this->db->affected_rows();
        return $atualizou_funcionario;
    }
    
    /**
     * Remove um funcionario do banco de dados
     * 
     * @param int $id ID do funcionario a ser removido
     * @return boolean
     */
    function remover($id){
        
        $this->db->where('id', (int)$id);
        
        $this->db->delete($this->tabela);
        
        return (bool)$this->db->affected_rows();
    }
    function get_by_cpf($cpf,$id = 0){
        
        $this->db->select('*');
        
        $this->db->from($this->tabela);
        
        $this->db->where('cpf',$cpf);
        
        if ($id > 0) {
            
            $this->db->where_not_in('id',$id);
        }
        
        $resultado = $this->db->get();
        if($resultado->num_rows() > 0){
            return $resultado->row(0);
        }else{
            return FALSE;
        }
    }
    
    function get_funcionario_setor($setor){
        
        $this->db->select('*');
        $this->db->from($this->tabela);
        $this->db->where('setor_id',$setor);
        
        
        $resultado = $this->db->get();
        
        if($resultado->num_rows() > 0 ){
            return $resultado->result();
        }
        else{
            
            return array();
            }
  
    }
    
    
    
}